<?php
/**
  * Clase para la gestión de compañías.
  *
  * @autor  Andres Hocevar <aahahocevar@gmail.com>
  * @package controllers
  */
class companias extends CI_Controller {
/**
 *  Título.
 */
	var $titp='Compa&ntilde;ías';
/**
 *  Dirección url de la clase.
 */
	var $url ='companias/';

	function index(){
		return;
	}

/**
  * CRUD para los registro de compañías.
  *
  * @since 1.0
  *
  * @return void
  * @param string    $status Tipo de acción a ejecutar puede ser create,modify,show,delete.
  * @param int       $id     Clave primaria de registro en la tabla compania.
  */
	function dataeditmobil($status,$id=0){
		$this->load->library('rapyd');
		$ut= new rpd_auth_library();
		$rt=$ut->logged();
		if($rt===false) die('Acceso no permitido');
		$role  = $ut->role();
		if($role>2)     die('Acceso no permitido');

		if($role==1){
			if($id==0){
				$back='dashboard/index';
			}else{
				$back='dashboard/gcompania/'.$id;
			}
		}else{
			$back='dashboard/gcompalu';
			$data['home_url']   = $back;
		}

		$dbprefix=$this->db->dbprefix;

		$edit = new dataedit_library();
		$edit->back_save  =true;
		$edit->back_cancel=true;
		$edit->back_cancel_save   = true;
		$edit->back_cancel_delete = true;

		$edit->label = $this->titp;
		$edit->back_url = site_url($back);

		$edit->source('compania');
		$edit->pre_process(array('delete'), array($this, 'pre_delete'));
		$edit->pre_process(array('update'), array($this, 'pre_update'));
		$edit->field('input','nombre','Nombre')
			->rule('trim|required|unique|max_length[200]')
			->set_attributes(array('maxlength'=>'200'));
		
		$edit->field('dropdown','id_producto','Producto')
			->option('','Ninguno')
			->options("SELECT id,nombre FROM ${dbprefix}producto ORDER BY nombre");
		
		$edit->buttons('modify','save','undo','back');
		if($role==1) $edit->buttons('delete');
		$edit->build();

		$data['content']    = $edit;
		$data['back_url']   = $back;
		$data['header']     = 'Gerencia de Compa&ntilde;&iacute;a';
		$data['title']      = 'Ficha de Compa&ntilde;&iacute;as';
		$data['footer']     = '';
		$data['headerextra'] = ($role==1)? 'Profesor: ': (($role==2)? 'Alumno Gerente: ':'Alumno: ');
		$data['headerextra'].= $ut->user('name');

		$this->load->view('view_ven', $data);
	}

/**
  * Pre-proceso antes de actualizar.
  *
  * Relaciona la compañía con los compromisos en caso de no tenerla
  *
  * @return boolean
  *
  * @param object    $model Modelo de la tabla compania.
  */
	function pre_update($model){
		$id_compania=$model->pk['id'];

		$sel=array('a.id_producto');
		$this->db->select($sel);
		$this->db->from('compania AS a');
		$this->db->where('a.id',$id_compania);
		$query = $this->db->get();
		$row   = $query->row();

		$ant_prod = $row->id_producto;
		$act_prod = $model->get('id_producto');
		if((!empty($act_prod)) && $act_prod>0 && $ant_prod!=$act_prod){
			$data=array('id_producto'=>$act_prod);
			$this->db->where('id_compania' , $id_compania);
			$this->db->where('id_producto' , 0);
			$this->db->update('compromisos', $data);
		}
		return true;
	}

/**
  * Pre-proceso antes de borrar.
  *
  * Chequea que la compañía a borrar no tenga integrantes asociados
  * y/o compromisos
  *
  * @return boolean
  *
  * @param object    $model Modelo de la tabla compania.
  */
	function pre_delete($model){
		$id=$model->pk['id'];
		$cana=0;
		$this->db->from('integrantes');
		$this->db->where('id_compania',$model->pk['id']);
		$cana+= $this->db->count_all_results();

		$this->db->from('compromisos');
		$this->db->where('id_compania',$model->pk['id']);
		$cana+= $this->db->count_all_results();

		if($cana>0){
			$model->error_string = 'No se puede eliminar una compañía con trayectoria.';
			return false;
		}else{
			return true;
		}
	}

}
